/** ***********************************************************************************
* @file         national_data_process.h
* @brief        国标数据解析处理 头文件
* @details      主要使用来处理32960国标数据
* @author       杨小珛
* @date         2021/01/30
* @copyright    北京高知科技有限公司    
* @version      V1.0
* @attention    无
**************************************************************************************/
#ifndef NATIONAL_DATA_PRO_H
#define NATIONAL_DATA_PRO_H

#include "gaoz_api.h"

#define NET_WAIT_SEND_MAX_TIME 	( 3000 )

/**************************平台等待应答的状态**************************/
typedef enum
{
    PLAT_RESPONSE_INIT = 0x00,          
	PLAT_NO_RESPONSE, 					/* 平台无应答 */
    PLAT_HAVE_RESPONSE,                /* 平台有应答 */
}national_response_e;

typedef enum
{
	PLAT_SEND_INIT = 0x00,
    PLAT_SEND_ERR,             			/* 发送数据失败 */
    PLAT_SEND_OK,                      /* 发送数据成功 */
}national_send_data_e;

/****************************设备运行的状态**************************/
typedef enum
{
	TER_RUNING_INIT =0x00,			/* 设备运行在初始化状态  */
	/*注册*/
	TER_RUNING_REG,					/* 设备运行在注册的状态 */
	/*鉴权*/
	TER_RUNING_AUTH,					/* 设备运行在鉴权的状态 */	
	/*数据*/
	TER_RUNING_DATA,					/* 设备运行在数据的状态 */
	/*心跳*/
	TER_RUNING_HEART,					/* 设备心跳数据的状态 */
	/*登出*/
	TER_RUNING_LOGOUT,					/* 设备登出*/

	TER_RUNING_VERSION_TRUE,			/* 平台查询版本号 -- 正常*/
	TER_RUNING_VERSION_FAIL,			/* 平台查询版本号 -- 异常*/
	/*车辆控制 -- OTA*/
	TER_RUNING_CONTROL_FOTA_TRUE,		/* 车辆运行OTA控制 -- 正常*/
	TER_RUNING_CONTROL_FOTA_FAIL,		/* 车辆运行OTA控制 -- 异常*/
	/*车辆控制 -- 双闪鸣笛*/
	TER_RUNING_CONTROL_FLASHING_TRUE,	/* 车辆运行双闪控制 -- 正常*/
	TER_RUNING_CONTROL_FLASHING_FAIL,	/* 车辆运行双闪控制 -- 异常*/
	/*车辆控制 -- 定位车辆*/
	TER_RUNING_CONTROL_LOCATE_TRUE,	/* 车辆运行定位车辆控制 -- 正常*/
	TER_RUNING_CONTROL_LOCATE_FAIL,	/* 车辆运行定位车辆控制 -- 异常*/
	/*车辆控制 -- 空调*/
	TER_RUNING_CONTROL_AIR_COND_TRUE,	/* 车辆运行空调控制 -- 正常*/
	TER_RUNING_CONTROL_AIR_COND_FAIL,	/* 车辆运行空调控制 -- 异常*/
	/*车辆控制 -- 车锁*/
	TER_RUNING_CONTROL_DOOR_TRUE,		/* 车辆运行车锁控制 -- 正常*/
	TER_RUNING_CONTROL_DOOR_FAIL,		/* 车辆运行车锁控制 -- 异常*/
	/*车辆控制 -- 发动机*/
	TER_RUNING_CONTROL_ENGINE_TRUE,	/* 车辆运行发动机控制 -- 正常*/
	TER_RUNING_CONTROL_ENGINE_FAIL,	/* 车辆运行发动机控制 -- 异常*/
	/*车辆控制 -- 车窗*/
	TER_RUNING_CONTROL_WIND_TRUE, 	/* 车辆运行车窗控制 -- 正常*/
	TER_RUNING_CONTROL_WIND_FAIL, 	/* 车辆运行车窗控制 -- 异常*/
	/*车辆控制 -- 天窗*/
	TER_RUNING_CONTROL_ROOF_TRUE, 	/* 车辆运行天窗控制 -- 正常*/
	TER_RUNING_CONTROL_ROOF_FAIL, 	/* 车辆运行天窗控制 -- 异常*/
	TER_RUNING_CONTROL_BT,			/* BT*/
	TER_RUNING_CONTROL_PKEKEY,		/* PKEKEY*/
	TER_RUNING_GENERAL_RSP,         /* 设备通用应答 */    
	/*OTA远程升级*/
	TER_RUNING_FOTA_SATRT,				/* 启动远程OTA升级*/
	TER_RUNING_FOTA_UPGRADE,			/* FOTA升级过程中*/

	TER_RUNING_FIRMWARE_SATRT,			/* 通知平台开始刷新固件*/
	TER_RUNING_FIRMWARE_SUCCESS,		/* 本地下载固件成功*/
	TER_RUNING_FIRMWARE_FAIL,			/* 本地下载固件失败*/
	/*系统参数设置 32*/
	TER_RUNING_QUERY_SYS_PAR_TRUE,		/* 系统查询参数成功*/
	TER_RUNING_QUERY_SYS_PAR_FAIL,		/* 系统查询参数失败*/
	
	TER_RUNING_SET_SYS_PAR_TRUE,		/* 系统设置参数成功*/
	TER_RUNING_SET_SYS_PAR_FAIL,		/* 系统设置参数失败*/
	/**/
	TER_RUNING_STOP,					/* 设备运行在停止的状态 */
	TER_RUNING_QUERY_DATA,				/* 系统查询数据*/
	TER_RUNING_QUERY_DATA_ACTIVE,		/* 主动上报数据*/
	TER_RUNING_QUERY_RSA,               /* 查询RSA 数据*/
	TER_RUNING_QUERY_QXWZ,              /* 查询QXWZ 数据*/
	TER_RUNING_UPLOAD_PKEKEY,           /* 上报钥匙码 */
	TER_RUNING_QUERY_PKEKEY,            /* 请求钥匙码 */

	/**/
	TER_RUNING_DATA_TRANSFER,			/*网络数据透传，适用于亿华项目*/

	TER_RUNING_DATA_DOWN_TRUE,			/*网络数据透传下发成功*/
	TER_RUNING_DATA_DOWN_FAIL,			/*网络数据透传下发失败*/

	TER_RUNING_START_ENGINE_RESP,		/*远程一键启动通用应答*/
	TER_RUNING_START_ENGINE_RESULT,		/*远程一键启动执行结果应答处理*/

	TER_RUNING_FAULT_CODE_QUERY_RESP,	/*车辆故障码查询应答*/
	TER_RUNING_FAULT_CODE_CLEAR_RESP,	/*车辆故障码清除应答*/

	TER_RUNING_FAULT_CODE_INFOR_SEND,	/*车辆故障码信息发送*/
	TER_RUNING_VEHICLE_DTC_CODE_REPORT,	/*全车故障上报 */

	TER_RUNING_MAINTENANCE_INFOR_SEND,	/*车辆保养信息发送*/

	TER_RUNING_SEED_INFOR_SEND,			/*终端设备上报安全认证SEED*/

	TER_RUNING_ADAS_INFOR_SEND,			/*终端设备主动上报ADAS数据*/

	TER_RUNING_RV_POWER_RESP,			/*房车断电应答*/
}national_run_state_e;

/****************************网络应答的状态**************************/
typedef enum
{
	TER_RESPONSE_INIT = 0x00,				/* 终端应答初始化*/
	/*注册--类*/
	TER_RESPONSE_REG,						/* 注册平台 */
	TER_RESPONSE_AUTH,						/* 鉴权平台 */
	/*心跳--类*/
	TER_RESPONSE_HEART,						/* 终端心跳应答*/
	TER_RESPONSE_LOGOUT,					/* 终端登出应答*/
	/*数据--类*/
	TER_REALTIME_DATA_REQ,					/* 终端数据实时数据 平台应答*/
	TER_RESEND_DATA_REQ,					/* 终端数据补发数据 平台应答*/
	
	/*控制--类*/
	TER_CONTROL_TER_FOTA,					/* 平台下发控制命令 -- 升级*/	
	TER_CONTROL_TER_POWER_OFF,				/* 平台下发控制命令 -- 关机*/	
	TER_CONTROL_TER_RESET,					/* 平台下发控制命令 -- 复位*/	
	TER_CONTROL_TER_FACTORY,				/* 平台下发控制命令 -- 恢复出厂设置*/
	TER_CONTROL_TER_LINK_DOWN,				/* 平台下发控制命令 -- 通信断开*/
	TER_CONTROL_TER_TER_ALARM,				/* 平台下发控制命令 -- 终端报警*/
	TER_CONTROL_TER_CHECK_LINK,				/* 平台下发控制命令 -- 检测链路*/
	
	TER_CONTROL_TER_FLASHING_HORNS,			/* 平台下发控制命令 -- 双闪鸣笛*/
	TER_CONTROL_TER_LOCATE_VEHICLE,			/* 平台下发控制命令 -- 远程定位车辆*/
	TER_CONTROL_TER_START_AIR_COND,			/* 平台下发控制命令 -- 远程开始空调*/
	TER_CONTROL_TER_DOOR_UNCLOCK, 			/* 平台下发控制命令 -- 车门解锁*/
	TER_CONTROL_TER_START_ENGINE, 			/* 平台下发控制命令 -- 远程启动/熄火发动机*/
	TER_CONTROL_TER_UP_DOWN_WIND, 			/* 平台下发控制命令 -- 远程升降车窗*/
	TER_CONTROL_TER_ROOF_OPENING,			/* 平台下发控制命令 -- 远程天窗控制*/
	TER_CONTROL_TER_BT_UPDATESE,			/* 平台下发控制命令 -- 更新蓝牙密钥*/
	TER_CONTROL_TER_QXWZKEY_SET,			/* 平台下发控制命令 -- 更新qxwz密钥*/
	TER_CONTROL_TER_QXWZKEY_CLE,			/* 平台下发控制命令 -- 清除qxwz密钥*/
	TER_CONTROL_TER_UPDATE_ID,				/* 平台下发控制命令 -- 更新车辆ID*/
	TER_CONTROL_TER_POWER,					/* 平台下发控制命令 -- 供电*/
	TER_CONTROL_TER_STARTPOWER,				/* 平台下发控制命令 -- 一键启动*/
	TER_CONTROL_TER_PKEKEY,				    /* 平台下发控制命令 -- 钥匙秘钥*/
	/*升级--类*/
	TER_FOTA_DOWNLOAD_START,				/* FOTA开始下载固件 -- 继续下载*/
	TER_FOTA_DOWNLOAD_STOP,					/* FOTA开始下载固件 -- 任务已经停止*/

	TER_FOTA_DOWNLOAD_SUCCESS,				/* FOTA开始下载固件 -- 下载固件成功*/
	TER_FOTA_DOWNLOAD_ERR,					/* FOTA开始下载固件 -- 下载固件失败*/

	TER_FOTA_FIRMWARE_START,				/* FOTA开始下载固件 -- 继续下载*/
	TER_FOTA_FIRMWARE_STOP,					/* FOTA开始下载固件 -- 任务已经停止*/

	TER_FOTA_FIRMWARE_SUCCESS,				/* FOTA开始下载固件 -- 升级固件成功*/
	TER_FOTA_FIRMWARE_ERR,					/* FOTA开始下载固件 -- 升级固件失败*/
	TER_FOTA_FIRMWARE_TIME_OUT,				/* FOTA开始下载固件 -- 应答超时*/

	/*查询/设置--类*/
	TER_QUERY_SYS_PARRMETER,				/* 平台下发查询系统参数*/
	TER_SET_SYS_PARRMETER,					/* 平台下发设置系统参数*/	
	TER_QUERY_SYS_VERSION,					/* 平台下发查询系统版本号*/
	TER_QUERY_REALTIME,						/* 平台下发查询实时数据*/
	TER_QUERY_RSA,						  	/* 平台下发查询RSA*/
	TER_QUERY_QXWZPARA,						/* 平台下发查询qxwzPara*/
	TER_CONTROL_TERMINAL_ACK,				/* 平台下发控制车机命令*/	
	TER_QUERY_PKEKEY,						/* 平台下发钥匙秘钥*/
	
	/*数据透传*/
	TER_RESPONSE_DATA_UP,					/* 网络数据透传上报*/
	TER_RESPONSE_DATA_DOWN,					/* 网络数据透传下发*/
	
	/*车辆故障码*/
	TER_FAULT_CODE_QUERY,					/* 车辆故障码查询下发*/
	TER_FAULT_CODE_CLEAR,					/* 车辆故障码清除下发*/
	TER_FAULT_CODE_UPDATA,					/* 车辆主动上报故障码*/		

	/*保养信息设置*/
	TER_MAINTENANCE_INFOR_SET,				/* 车辆保养信息设置*/ 

	TER_MAINTENANCE_INFOR_UPDATA,			/* 车辆保养信息上报*/
	TER_BMS_INFOR_UPDATA,					/* 车辆BMS信息上报*/
	
	/*房车断电指令*/
	TER_RV_POWER_CTL,						/* 房车断电指令下发*/
}national_res_state_e;	

/*************************平台应答结果*******************************/

typedef enum
{
    PLAT_RES_OK = 0x00,                 /* 平台成功 */
    PLAT_RES_ERR,                        /* 平台失败 */
}national_result_e;

/*************************平台应答结果信息结构体**********************/
typedef struct
{
    national_res_state_e        commane; /* 应答命令 */
 	national_result_e           results; /* 应答结果 */
} national_net_res_msg_t;

#define  NET_ACK_QUEUE_MAX_NUM			( 10 )
#define  NET_ACK_QUEUE_RX_DATA_TIME		( 3000 )

/*************************平台应答结果信息结构体**********************/
typedef struct
{
	volatile uint8_t send_st;  /* 网络发送的数据状态 */
	volatile uint8_t recv_st;  /* 网络接收的数据状态 */
} national_net_data_st_t;

#define NET_DATA_SEND_RECV_COUNTER  ( 0x05 )

/** ****************************************************************************
* @remarks       void national_create_task( unsigned portBASE_TYPE uxPriority )
* @brief         国标数据处理任务
* @param[in]     uxPriority 优先级
* @param[out]    无
* @return        无
* @attention     在系统启动后进行创建
*******************************************************************************/
extern void national_create_task( unsigned portBASE_TYPE uxPriority );

#endif

